home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / CIncludes / OpenTptXTI.h < prev    next >
C/C++ Source or Header  |  1996-05-01  |  5KB  |  196 lines

  1. /*
  2.     File:        OpenTptXTI.h
  3.  
  4.     Contains:    Prototypes for XTI-compatible routines for
  5.                 Open Transport
  6.  
  7.  
  8.  
  9. */
  10.  
  11. #ifndef __OPENTPTXTI__
  12. #define __OPENTPTXTI__
  13.  
  14. #ifndef __OPENTRANSPORT__
  15. #include <OpenTransport.h>
  16. #endif
  17.     
  18. /*******************************************************************************
  19. ** Global Variables
  20. ********************************************************************************/
  21.                     
  22. extern int    t_errno;
  23.  
  24. /*******************************************************************************
  25. ** Structures
  26. **
  27. ** WARNING: These structures will only work if "int"s are the
  28. **            same size as "size_t", "long", and "UInt32"
  29. ********************************************************************************/
  30.  
  31. struct netbuf
  32. {
  33.     unsigned int    maxlen;
  34.     unsigned int    len;
  35.     char*            buf;
  36. };
  37.  
  38. struct t_bind 
  39. {
  40.     struct netbuf        addr;
  41.     unsigned            qlen;
  42. };
  43.  
  44. struct t_optmgmt 
  45. {
  46.     struct netbuf    opt;
  47.     long            flags;
  48. };
  49.  
  50. struct t_discon 
  51. {
  52.     struct netbuf    udata;
  53.     int             reason;
  54.     int             sequence;
  55. };
  56.  
  57. struct t_call 
  58. {
  59.     struct netbuf    addr;
  60.     struct netbuf    opt;
  61.     struct netbuf    udata;
  62.     int             sequence;
  63. };
  64.  
  65. struct t_unitdata 
  66. {
  67.     struct netbuf    addr;
  68.     struct netbuf    opt;
  69.     struct netbuf    udata;
  70. };
  71.  
  72. struct t_uderr 
  73. {
  74.     struct netbuf    addr;
  75.     struct netbuf    opt;
  76.     long            error;
  77. };
  78.  
  79. /*    -------------------------------------------------------------------------
  80.     Transaction data structures
  81.     ------------------------------------------------------------------------- */
  82.  
  83. struct t_request        
  84. {
  85.     struct netbuf    data;
  86.     struct netbuf    opt;
  87.     long            sequence;
  88. };
  89.  
  90. struct t_reply        
  91. {
  92.     struct netbuf    data;
  93.     struct netbuf    opt;
  94.     long            sequence;
  95. };
  96.  
  97. struct t_unitrequest
  98. {
  99.     struct netbuf    addr;
  100.     struct netbuf    opt;
  101.     struct netbuf    udata;
  102.     long            sequence;
  103. };
  104.  
  105. struct t_unitreply
  106. {
  107.     struct netbuf    opt;
  108.     struct netbuf    udata;
  109.     long            sequence;
  110. };
  111.  
  112. struct t_opthdr
  113. {
  114.     unsigned long    len;        /* total length of option = sizeof(struct t_opthdr) +    */
  115.                                 /*                        length of option value in bytes    */
  116.     unsigned long    level;        /* protocol affected */
  117.     unsigned long    name;        /* option name */
  118.     unsigned long    status;        /* status value */
  119.                                 /* followed by the option value */
  120. };
  121.  
  122.  
  123. /*******************************************************************************
  124. ** XTI Interfaces
  125. ********************************************************************************/
  126.  
  127. #ifdef __cplusplus
  128. extern "C" {
  129. #endif
  130.  
  131. extern pascal int     t_accept(int fd, int resfd, struct t_call* call);
  132. extern pascal char* t_alloc(int fd, int struct_type, int fields);
  133. extern pascal int     t_bind(int fd, struct t_bind* req, struct t_bind* ret);
  134. extern pascal int     t_close(int fd);
  135. extern pascal int     t_connect(int fd, struct t_call* sndcall, struct t_call* rcvcall);
  136. extern pascal int     t_free(char* ptr, int struct_type);
  137. extern pascal int     t_getinfo(int fd, struct t_info* info);
  138. extern pascal int     t_getstate(int fd);
  139. extern pascal int     t_listen(int fd, struct t_call* call);
  140. extern pascal int     t_look(int fd);
  141. extern pascal int     t_open(char* path, int oflag, struct t_info* info);
  142. extern pascal int    t_blocking(int fd);
  143. extern pascal int    t_nonblocking(int fd);
  144. extern pascal int     t_optmgmt(int fd, struct t_optmgmt* req, struct t_optmgmt* ret);
  145. extern pascal int     t_rcv(int fd, char* buf, size_t nbytes, int* flags);
  146. extern pascal int     t_rcvconnect(int fd, struct t_call* call);
  147. extern pascal int     t_rcvdis(int fd, struct t_discon* discon);
  148. extern pascal int     t_rcvrel(int fd);
  149. extern pascal int     t_rcvudata(int fd, struct t_unitdata* unitdata, int* flags);
  150. extern pascal int     t_rcvuderr(int fd, struct t_uderr* uderr);
  151. extern pascal int     t_snd(int fd, char* buf, size_t nbytes, int flags);
  152. extern pascal int     t_snddis(int fd, struct t_call* call);
  153. extern pascal int     t_sndrel(int fd);
  154. extern pascal int     t_sndudata(int fd, struct t_unitdata* unitdata);
  155. extern pascal int     t_sync(int fd);
  156. extern pascal int     t_unbind(int fd);
  157. extern pascal int     t_error(char* errmsg);
  158. extern pascal int     t_getprotaddr(int fd, struct t_bind* boundaddr, struct t_bind* peeraddr);
  159. //
  160. // Apple extensions
  161. //
  162. extern pascal int    t_isnonblocking(int fd);
  163. extern pascal int    t_asynchronous(int fd);
  164. extern pascal int    t_synchronous(int fd);
  165. extern pascal int    t_issynchronous(int fd);
  166. extern pascal int    t_usesyncidleevents(int fd, int useEvents);
  167. /*
  168. ** Not XTI standard functions, but extensions for transaction endpoints    
  169. */
  170. extern pascal int    t_sndrequest(int fd, struct t_request*, int flags);
  171. extern pascal int    t_rcvreply(int fd, struct t_reply*, int* flags);
  172. extern pascal int    t_rcvrequest(int fd, struct t_request*, int* flags);
  173. extern pascal int    t_sndreply(int fd, struct t_reply*, int flags);
  174. extern pascal int    t_cancelrequest(int fd, long sequence);
  175. extern pascal int    t_cancelreply(int fd, long sequence);
  176.  
  177. extern pascal int    t_sndurequest(int fd, struct t_unitrequest*, int flags);
  178. extern pascal int    t_rcvureply(int fd, struct t_unitreply*, int* flags);
  179. extern pascal int    t_rcvurequest(int fd, struct t_unitrequest*, int* flags);
  180. extern pascal int    t_sndureply(int fd, struct t_unitreply*, int flags);
  181. extern pascal int    t_cancelurequest(int fd, long sequence);
  182. extern pascal int    t_cancelureply(int fd, long sequence);
  183.  
  184. extern pascal int    t_resolveaddr(int fd, struct t_bind* reqAddr, struct t_bind* retAddr, OTTimeout timeout);
  185. extern pascal int    t_cancelsynchronouscalls(int fd);
  186. extern pascal int    t_installnotifier(int fd, OTNotifyProcPtr proc, void* contextPtr);
  187. extern pascal void    t_removenotifier(int fd);
  188.  
  189. #ifdef __cplusplus
  190. }
  191. #endif
  192.  
  193.  
  194. #endif    /* __OPENTRANSPORT__ */
  195.  
  196.